package edu.logica;

import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;

import edu.logica.util.CentralDatos;
import edu.logica.util.Constantes;
import edu.vista.AdminIntefaz;
import edu.vista.Dialogo;

// Implementamos el DiscoveryListener
public class ListenerCliente implements DiscoveryListener {

    private ManejadorBluetooth padre;

    public ListenerCliente(ManejadorBluetooth padre) {
        System.out.println("padre:" + padre);
        this.padre = padre;
    }

    // Implementamos los metodos del interfaz DiscoveryListener
    public void deviceDiscovered(RemoteDevice dispositivoRemoto,
            DeviceClass clase) {
        System.out.println("Se ha encontrado un dspositivo Bluetooth");
        CentralDatos.dispositivos_encontrados.addElement(dispositivoRemoto);
    }

    public void inquiryCompleted(int completado) {
        System.out.println("Se ha completado la busqueda de dispositivos");
        CentralDatos.buscando = false;
        if (CentralDatos.dispositivos_encontrados.size() == 0) {
            Dialogo.getDialogo().mostrarDialogoInformacion("no se encontraron dispositivos");
            AdminIntefaz.getAdminIntefaz().adelante = false;
            AdminIntefaz.getAdminIntefaz().setCurrent(Constantes.MENU_PRINCIPAL);
        } else {
            //mostramos los resultados
            AdminIntefaz.getAdminIntefaz().adelante = true;
            AdminIntefaz.getAdminIntefaz().setCurrent(Constantes.LIST_DISPOSITIVOS);
        }
    }

    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
        System.out.println("Se ha encontrado un servicio remoto");
        for (int i = 0; i < servRecord.length; i++) {
            ServiceRecord record = servRecord[i];
            CentralDatos.servicios_encontrados.addElement(record);
//            String info="";
//            for (int j = 0; j < record.getAttributeIDs().length; j++) {
//                info += record.getAttributeIDs()[j];
//
//            }

            Dialogo.getDialogo().mostrarDialogoInformacion(record.toString());
        }

    }

    public void serviceSearchCompleted(int transID, int respCode) {
        System.out.println("Terminada la busqueda de servicios");
        // Si encontramos un servicio, lo usamos para mandar el
        // mensaje(todos los servicios que hemos buscado son de puerto serie)

        if (CentralDatos.servicios_encontrados.size() > 0) {
            padre.abrirCanal();
            CentralDatos.buscando = false;
            AdminIntefaz.getAdminIntefaz().adelante = false;
            AdminIntefaz.getAdminIntefaz().setCurrent(Constantes.MENSAJE);
        } else {
            // Si no encontramos ningun servicio de puerto serie
            Dialogo.getDialogo().mostrarDialogoInformacion("el servidor no soporta es servicio serial");
        }

    }
}
